package com.zzw.springboot.service;


import com.zzw.springboot.bean.Purchase;
import com.zzw.springboot.bean.PurchaseItem;

import java.util.List;

/**
 * 采购单Service接口
 */
public interface PurchaseService {
    /**
     * 添加采购单
     * @param purchase 采购单信息
     * @return 影响行数
     */
    int addPurchase(Purchase purchase);

    /**
     * 更新采购单
     * @param purchase 采购单信息
     * @return 影响行数
     */
    int updatePurchase(Purchase purchase);

    /**
     * 删除采购单
     * @param purchaseId 采购单ID
     * @return 影响行数
     */
    int deletePurchase(Integer purchaseId);

    /**
     * 批量删除采购单
     * @param purchaseIds 采购单ID数组
     * @return 影响行数
     */
    int deletePurchaseBatch(Integer[] purchaseIds);

    /**
     * 根据ID查询采购单
     * @param purchaseId 采购单ID
     * @return 采购单信息
     */
    Purchase getPurchaseById(Integer purchaseId);

    /**
     * 查询采购单列表
     * @param purchase 查询条件
     * @return 采购单列表
     */
    List<Purchase> getPurchaseList(Purchase purchase);

    /**
     * 采购单审批
     * @param purchaseId 采购单ID
     * @param approvalUserId 审批人ID
     * @param status 审批状态：2-已审核，-1-已拒绝
     * @return 影响行数
     */
    int approvePurchase(Integer purchaseId, Integer approvalUserId, Integer status);

    /**
     * 取消采购单
     * @param purchaseId 采购单ID
     * @return 影响行数
     */
    int cancelPurchase(Integer purchaseId);

    /**
     * 入库处理
     * @param purchaseId 采购单ID
     * @param userId 操作用户ID
     * @param items 入库明细
     * @return 影响行数
     */
    int receiveItems(Integer purchaseId, Integer userId, List<PurchaseItem> items);

    /**
     * 根据采购单ID获取明细
     * @param purchaseId 采购单ID
     * @return 明细列表
     */
    List<PurchaseItem> getPurchaseItemsByPurchaseId(Integer purchaseId);

    /**
     * 生成采购单号
     * @return 采购单号
     */
    String generatePurchaseNo();
}
